﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ICarlifeRespository
{
    public interface IBasePespository<T> where T : class,new()
    {
        #region EFCore
        void Add(T entity);//添加
        void Update(T entity);//修改
        void Delete(T entity);//删除
        List<T> GetAll();//显示
        T GetById(int id);
        void AddRange(List<T> enitity);//部分添加
        #endregion

        #region Dapper
        //dapper的查询操作（返回结果集）
#pragma warning disable CS8625 // 无法将 null 字面量转换为非 null 的引用类型。
        Task<List<T>> Query(string sql, object param = null);
#pragma warning restore CS8625 // 无法将 null 字面量转换为非 null 的引用类型。
        Task<List<T>> Query(string sql, object param, CommandType commandType);

        //dapper的增删改操作(返回受影响行数)
#pragma warning disable CS8625 // 无法将 null 字面量转换为非 null 的引用类型。
        Task<int> Execute(string sql, object param, IDbTransaction transaction = null);
#pragma warning restore CS8625 // 无法将 null 字面量转换为非 null 的引用类型。
        #endregion
    }
}
